/*
判断二叉树是否相同
*/

// 包含二叉树的基本运算算法 
#include"btree.cpp"

// 判断两个二叉树是否相同
bool same(TreeNode* t1,TreeNode* t2)
{
	// 两个二叉树均为空
	if(t1==NULL && t2==NULL)
		return true;
	
	// 其中一个为空
	else if(t1==NULL || t2==NULL)
		return false;
	
	// 比较根结点的值
	if(t1->val != t2->val)
		return false;
	
	// 比较左子树
	bool left = same(t1->left, t2->left);
	
	// 比较右子树
	bool right = same(t1->right,t2->right);
	
	// 返回结果
	return left && right;
}

int main()
{
	// 创建两个二叉树的根结点
	TreeNode *b1, *b2;
	
	// 根据数组，创建二叉树
	vector<int> a={1, 3, 5, null, null, 4};
	b1=CreateBTree(a);
	
	// 打印二叉树
	printf("b1: "); DispBTree(b1); printf("\n");
	
	// 根据数组，创建二叉树
	b2=CreateBTree(a);
	
	// 打印二叉树
	printf("b2: "); DispBTree(b2); printf("\n");
	
	// 判断两棵二叉树是否相同
	printf("b1=b2? %d\n", same(b1, b2));
	
	// 释放内存
	DestroyBTree(b1);
	DestroyBTree(b2);
	return 0;
}
